草庐IT

Where 条件

全部标签

c# - 将 if(x) Foreach() 替换为 Foreach.Where(x)

可能是个愚蠢的问题,但我有很多:if(X){foreach(varYinmyList.Where(z=>z==1){}}在一些代码中构造将其替换为foreach(varYinmyList.Where(z=>X&&z==1){}疯了吗?它的可读性可能较差,但编译器会优化它以使其成为几乎相同的代码吗? 最佳答案 不,您的第一个版本更好更快。当X为真时,第二个版本将为序列中的每个元素计算X。你应该坚持第一个版本。 关于c#-将if(x)Foreach()替换为Foreach.Where(x),

c# - 当条件为真时,LINQ to 对象是否停止处理 Any()?

考虑以下几点:boolinvalidChildren=this.Children.Any(c=>!c.IsValid());这个类有一个子对象的集合,这些子对象有一个IsValid()方法。假设IsValid()方法是处理器密集型任务。在遇到第一个IsValid()为false的子对象后,理论上可以停止处理,因为结果永远不会变为true。LINQtoobjects在第一个IsValid()=false(如逻辑AND)之后实际上停止计算还是继续计算所有子对象?显然,我可以将它放在foreach循环中并在第一个无效结果处中断,但我只是想知道LINQtoobjects是否足够聪明,可以做到这

c# - Linq 到 SQL : WHERE IN statement

CREATETABLE[MyNames]([ID]INTIDENTITYPRIMARYKEY,[Name]NVARCHAR(255)NULL)INSERTINTO[MyNames]VALUES('John')INSERTINTO[MyNames]VALUES('Jane')INSERTINTO[MyNames]VALUES('Peter')INSERTINTO[MyNames]VALUES('Montgomery')INSERTINTO[MyNames]VALUES('Sarah')基于上述(假设的)SQL架构和数据,我想使用LinqtoSQL获取名称在数组值中的所有结果。string

c# - "Class of <T> where T : Enum"不工作

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:CreateGenericmethodconstrainingTtoanEnum为什么我们不能在C#中执行此操作?而且,如果可能的话,我怎样才能做类似的事情!我想要什么:publicclassATagwhereT:enum{[Somecode..]}publicclassclassBasewhereT:enum{publicIDictionarytags{get;set;}}因此,当需要调用它时,我很确定只会获得我的枚举值之一。publicclassAClassUsingTag:classBase{publi

c# - new() 在 `where T: new()?` 中做了什么

下面代码中的new()做了什么?publicclassAwhereT:B,new() 最佳答案 这是对您的类的泛型参数的约束,这意味着作为泛型类型传递的任何类型都必须具有无参数构造函数。所以,publicclassC:B{publicC(){}}将是一个有效的类型。您可以创建A的新实例.但是,publicclassD:B{publicD(intsomething){}}将不满足约束条件,并且不允许您创建A的新实例.如果您还向D添加了一个无参数构造函数,那么它将再次有效。 关于c#-new

c# - 依赖注入(inject) Unity - 条件解析

条件解析是我目前最不理解的事情。假设我们有一个接口(interface)IAuthenticate:publicinterfaceIAuthenticate{boolLogin(stringuser,stringpass);}现在我有两种类型的身份验证。推特验证publicclassTwitterAuth:IAuthenticate{boolLogin(stringuser,stringpass){//connecttotwitterapi}}Facebook身份验证publicclassFacebookAuth:IAuthenticate{boolLogin(stringuser,s

C# 初始化条件赋值

在C#初始化程序中,如果条件为假,我不想设置属性。像这样:ServerConnectionserverConnection=newServerConnection(){ServerInstance=server,LoginSecure=windowsAuthentication,if(!windowsAuthentication){Login=user,Password=password}};可以吗?怎么办? 最佳答案 这在初始化器中是不可能的;你需要做一个单独的if语句。或者,你可以这样写ServerConnectionserve

c# - 在条件运算中使用 true 和 false 作为表达式

我正在维护一些代码并且经常发现以下模式:varisMale=(row["Gender"].ToString()=="M")?true:false;而不是这个:varisMale=(row["Gender"].ToString()=="M");有什么理由为什么有人会这样做吗?有人认为前者更具可读性或更清晰吗?是否有某种旧的C语言“陷阱”是它的延期? 最佳答案 合理的理由?没有。它通常是由并不真正理解条件本身也是一个表达式的人产生的,它会产生一个bool结果。特别是,人们接受的语言不是这种情况,例如BASIC的许多变体。

c# - IF Statement 多个条件,同一条语句

大家好,希望减少我的c#if语句中的代码,因为有几个重复因素,并且想知道是否可以使用trimmer解决方案。我目前有2个if语句需要执行相同的语句,但是唯一的变量是在未选中复选框时if语句的额外条件。我只是想知道是否有办法让它成为一条语句或使条件字符串成为变量,这里是代码的压缩版本:if(checkbox.checked){if(columnname!=a&&columnname!=b&&columnname!=c){"statement1"}}else{if(columnname!=a&&columnname!=b&&columnname!=c&&columnname!=A2){"s

c# - Entity Framework 中的条件包含()

这个问题在这里已经有了答案:EF:Includewithwhereclause[duplicate](5个答案)关闭2年前。我已经看到了一些类似问题的答案,但是我似乎无法弄清楚如何将答案应用到我的问题中。varallposts=_context.Posts.Include(p=>p.Comments).Include(aa=>aa.Attachments).Include(a=>a.PostAuthor).Where(t=>t.PostAuthor.Id==postAuthorId).ToList();附件可以由作者(作者类型)或贡献者(类型贡献者)上传。我想要做的,只是获取附件所有者